home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1997 / HAM Radio 1997.iso / vcls / wsanet8a / wsanet / wsmtpc / vb20 / formsmtp.frm next >
Text File  |  1996-04-08  |  8KB  |  270 lines

  1. VERSION 2.00
  2. Begin Form FormSMTPClient 
  3.    BackColor       =   &H00C0C0C0&
  4.    Caption         =   "SMTP Client - Test of WSNetC"
  5.    Height          =   4545
  6.    Icon            =   FORMSMTP.FRX:0000
  7.    Left            =   960
  8.    LinkTopic       =   "Form1"
  9.    ScaleHeight     =   4170
  10.    ScaleWidth      =   7890
  11.    Top             =   1065
  12.    Width           =   7980
  13.    Begin NetClient NetClient 
  14.       Left            =   7080
  15.       LineDelimiter   =   ""
  16.       RecvSize        =   4096
  17.       RecvThreshold   =   0
  18.       Top             =   360
  19.    End
  20.    Begin CommandButton BtnSend 
  21.       Caption         =   "&Send Test"
  22.       Height          =   330
  23.       Left            =   5460
  24.       TabIndex        =   3
  25.       Top             =   390
  26.       Width           =   1455
  27.    End
  28.    Begin TextBox TextUser 
  29.       FontBold        =   0   'False
  30.       FontItalic      =   0   'False
  31.       FontName        =   "MS Sans Serif"
  32.       FontSize        =   9.75
  33.       FontStrikethru  =   0   'False
  34.       FontUnderline   =   0   'False
  35.       Height          =   360
  36.       Left            =   225
  37.       TabIndex        =   2
  38.       Text            =   "iblenke"
  39.       Top             =   375
  40.       Width           =   1590
  41.    End
  42.    Begin TextBox TextHost 
  43.       FontBold        =   0   'False
  44.       FontItalic      =   0   'False
  45.       FontName        =   "MS Sans Serif"
  46.       FontSize        =   9.75
  47.       FontStrikethru  =   0   'False
  48.       FontUnderline   =   0   'False
  49.       Height          =   360
  50.       Left            =   2265
  51.       TabIndex        =   1
  52.       Text            =   "rhino.ess.harris.com"
  53.       Top             =   375
  54.       Width           =   2955
  55.    End
  56.    Begin ListBox ListProgress 
  57.       Height          =   3150
  58.       Left            =   0
  59.       TabIndex        =   0
  60.       Top             =   840
  61.       Width           =   7815
  62.    End
  63.    Begin Label LabelHost 
  64.       Alignment       =   2  'Center
  65.       BackColor       =   &H00C0C0C0&
  66.       BackStyle       =   0  'Transparent
  67.       Caption         =   "Localhost"
  68.       FontBold        =   -1  'True
  69.       FontItalic      =   0   'False
  70.       FontName        =   "MS Sans Serif"
  71.       FontSize        =   12
  72.       FontStrikethru  =   0   'False
  73.       FontUnderline   =   0   'False
  74.       Height          =   285
  75.       Left            =   15
  76.       TabIndex        =   5
  77.       Top             =   0
  78.       Width           =   8310
  79.    End
  80.    Begin Label Label1 
  81.       BackColor       =   &H00C0C0C0&
  82.       BackStyle       =   0  'Transparent
  83.       Caption         =   "@"
  84.       FontBold        =   0   'False
  85.       FontItalic      =   0   'False
  86.       FontName        =   "MS Sans Serif"
  87.       FontSize        =   12
  88.       FontStrikethru  =   0   'False
  89.       FontUnderline   =   0   'False
  90.       Height          =   375
  91.       Left            =   1875
  92.       TabIndex        =   4
  93.       Top             =   420
  94.       Width           =   375
  95.    End
  96. End
  97. Dim LocalHostName As String
  98. Dim CRLF As String
  99.  
  100. Const STATE_INACTIVE = 0
  101. Const STATE_HELO = 1
  102. Const STATE_MAILFROM = 2
  103. Const STATE_RCPTTO = 3
  104. Const STATE_DATA = 4
  105. Const STATE_SENDBODY = 5
  106. Const STATE_QUIT = 6
  107.  
  108. Dim SMTPState As Integer
  109.  
  110. Sub BtnSend_Click ()
  111.     
  112.     On Error Resume Next
  113.  
  114.     NetClient.HostName = TextHost.Text
  115.     If NetClient.HostName = "" Then
  116.         ListProgress.AddItem "Host " + TextHost.Text + " unknown."
  117.         Exit Sub
  118.     End If
  119.     
  120.     ' Use SMTP service (port 25)
  121.     NetClient.RemoteService = "smtp"
  122.     If NetClient.RemotePort = 0 Then
  123.         NetClient.RemotePort = 25
  124.     End If
  125.  
  126.     CRLF = Chr$(13) + Chr$(10)
  127.     NetClient.LineDelimiter = CRLF
  128.  
  129.     NetClient.Connect = True
  130.     
  131.     ListProgress.Clear
  132.     ListProgress.AddItem "Connecting to " + TextHost.Text + " via SMTP Port 25"
  133.  
  134.     SMTPState = STATE_HELO
  135.  
  136.     BtnSend.Enabled = False
  137.  
  138. End Sub
  139.  
  140. Sub Form_Load ()
  141.     
  142.     On Error Resume Next
  143.  
  144.     LocalHostName = NetClient.HostName
  145.     LabelHost = LocalHostName
  146. End Sub
  147.  
  148. Sub Form_Resize ()
  149.  
  150.     On Error Resume Next
  151.  
  152.     If FormSMTPClient.WindowState = 1 Then Exit Sub
  153.  
  154.     ListProgress.Width = ScaleWidth
  155.     ListProgress.Height = Abs(ScaleHeight - ListProgress.Top)
  156.  
  157.     LabelHost.Width = ScaleWidth
  158. End Sub
  159.  
  160. Sub NetClient_OnClose ()
  161.     
  162.     On Error Resume Next
  163.  
  164.     SMTPState = STATE_INACTIVE
  165.     BtnSend.Enabled = True
  166.  
  167. End Sub
  168.  
  169. Sub NetClient_OnConnect ()
  170.  
  171.     On Error Resume Next
  172.  
  173.     ReportProgress "Connected to " + NetClient.HostName
  174.     
  175.     SMTPState = STATE_MAILFROM
  176.  
  177. End Sub
  178.  
  179. Sub NetClient_OnError (ErrorNumber As Integer)
  180. Dim sTemp As String
  181.  
  182.     On Error Resume Next
  183.  
  184.     sTemp = NetClient.ErrorMessage
  185.     ReportProgress sTemp
  186. End Sub
  187.  
  188. Sub NetClient_OnRecv ()
  189. Dim sLine As String
  190. Dim iReturn As Integer
  191.  
  192.     On Error Resume Next
  193.  
  194.     sLine = NetClient
  195.     
  196.     Do While sLine <> ""
  197.         ReportProgress ">" + sLine
  198.  
  199.         'Strip out SMTP multi-line replies
  200.         While Mid$(sLine, 4, 1) = "-"
  201.             sLine = NetClient
  202.         Wend
  203.  
  204.         ' Get the SMTP reply number
  205.         iReturn = Val(Left$(sLine, 3))
  206.  
  207.         Select Case iReturn
  208.             Case 200 To 299:    ' Ok replies
  209.                 Select Case SMTPState
  210.                     Case STATE_HELO:
  211.                         sLine = "HELO " + LocalHostName + CRLF
  212.                         NetClient = sLine
  213.                         ReportProgress Left$(sLine, Len(sLine) - 2)
  214.                     Case STATE_MAILFROM:
  215.                         sLine = "MAIL FROM: <" + TextUser + "@" + LocalHostName + ">" + CRLF
  216.                         NetClient = sLine
  217.                         ReportProgress Left$(sLine, Len(sLine) - 2)
  218.                         SMTPState = STATE_RCPTTO
  219.                     Case STATE_RCPTTO:
  220.                         sLine = "RCPT TO: <" + TextUser + "@" + TextHost + ">" + CRLF
  221.                         NetClient = sLine
  222.                         ReportProgress Left$(sLine, Len(sLine) - 2)
  223.                         SMTPState = STATE_DATA
  224.                     Case STATE_DATA
  225.                         sLine = "DATA" + CRLF
  226.                         NetClient = sLine
  227.                         ReportProgress Left$(sLine, Len(sLine) - 2)
  228.                         SMTPState = STATE_SENDBODY
  229.                     Case STATE_QUIT
  230.                         sLine = "QUIT" + CRLF
  231.                         NetClient = sLine
  232.                         ReportProgress Left$(sLine, Len(sLine) - 2)
  233.                         SMTPState = STATE_INACTIVE
  234.                     Case STATE_HELO:
  235.                         NetClient.Connect = False
  236.                         BtnSend.Enabled = True
  237.                 End Select
  238.             Case 300 To 399:    ' Informational replies
  239.                 Select Case SMTPState
  240.                     Case STATE_SENDBODY:
  241.                         sLine = "This is a test of the SMTP client that comes with WSANET."
  242.                         ReportProgress sLine
  243.                         sLine = sLine + CRLF + "." + CRLF
  244.                         NetClient = sLine
  245.                         ReportProgress "."
  246.                         SMTPState = STATE_QUIT
  247.                 End Select
  248.             Case 500 To 599:
  249.                 ReportProgress "500 error! Abort! Abort!"
  250.                 Select Case SMTPState
  251.                     Case STATE_SENDBODY:
  252.                         NetClient = "." + CRLF
  253.                         SMTPState = STATE_QUIT
  254.                     Case Else
  255.                         NetClient = "QUIT" + CRLF
  256.                 End Select
  257.             Case Else
  258.                 ReportProgress "Unknown reply #" + Str$(iReturn) + "0!"
  259.         End Select
  260.         DoEvents
  261.         sLine = NetClient
  262.     Loop
  263.     
  264. End Sub
  265.  
  266. Sub ReportProgress (sMessage As String)
  267.     ListProgress.AddItem sMessage
  268. End Sub
  269.  
  270.